using SG3L_RAG.Domain.Entities;

namespace SG3L_RAG.Application.Interfaces
{
    public interface ILogService
    {
        Task<Log?> GetByIdAsync(Guid id);
        Task<IEnumerable<Log>> GetAllAsync();
        Task<Log> CreateAsync(string type, string content, string? exceptionDetail = null);
        Task UpdateAsync(Log log);
        Task DeleteAsync(Guid id);
        Task<IEnumerable<Log>> GetByTypeAsync(string type);
        Task<IEnumerable<Log>> GetByDateRangeAsync(DateTime startDate, DateTime endDate);
        Task<IEnumerable<Log>> GetRecentLogsAsync(int count = 100);
        Task<IEnumerable<Log>> GetErrorLogsAsync();
        Task<IEnumerable<Log>> GetWarningLogsAsync();
        Task<IEnumerable<Log>> GetInfoLogsAsync();
        Task LogInfoAsync(string content);
        Task LogWarningAsync(string content);
        Task LogErrorAsync(string content, string? exceptionDetail = null);
        Task CleanupOldLogsAsync(DateTime beforeDate);
    }
}
